In a typical computer graphics system a representation of a scene, that includes objects and/or environments having one or more surface areas, is generated and output for display on a display device. The surface areas would typically be divided into fixed sized regions and stored (cached) separately to help increase efficiency. These computer graphic systems typically incorporate processors configured to convert geometric data representing a surface area within a scene of interest, into pixel data that presents a two dimensional spatial representation of surface area. The pixel data is stored into memory and subsequently retrieved and processed to compose the pixel data. The composed pixel data is then output as a stream of pixels to an associated display device.
In a typical computer graphics system, a display device capable of displaying at a resolution of, for example, 16 pixels by 16 pixels will incorporate memory that is dedicated to storing pixel data that corresponds to a particular fixed region (pixel region) of the display area.
When pixel data is stored into memory, it is common to map available memory or a portion of available memory to correspond to a predetermined display device screen resolution. More particularly, for a display device capable of displaying a screen image at a predetermined number of horizontal pixels and a predetermined number of vertical pixels, memory is allocated to store data (pixel data) on a pixel-by-pixel basis. Pixel data is typically stored into memory as, for example, 8-bit data words, each 8-bit data word representing a single pixel. Typically one memory address is allocated for each pixel to be displayed on the corresponding display device.
Memory space for storing the pixel data is further allocated in blocks of sequential memory addresses (memory block) to correspond to predetermined regions of pixels of the display device. These memory blocks correspond to a predetermined burst size. This burst size may be determined by hardware requirements. Preferably, the burst size will be sufficient to enhance efficient pixel data transfer from/to memory. These regions of pixels are called pixels regions. For example, a display device capable of displaying imagery 16 pixels×16 pixels may be treated as a series of “pixel regions”. Each pixel region may be, for example, 4 pixels horizontally and 4 pixels vertically.
FIG. 1 shows an example of a horizontally scanning display device 25 capable of displaying an image that is 16 pixels horizontally and 16 pixels vertically (i.e. 16 pixels×16 pixels). In this example, the display 25 is divided into a series of pixel regions (Reg. A, Reg. B, Reg. C, Reg. D., Reg. E, Reg. F, Reg. G, Reg. H, Reg. I, Reg. J, Reg. K, Reg. L, Reg. M, Reg. N, Reg. O and Reg. P). Each pixel region A-P contains a predetermined number of pixels. In this example, each pixel region A-P contains 16 pixels and is 4 pixels horizontally and 4 pixels vertically. It is recognized that 16 pixels by 16 pixels is not generally a realistic display screen resolution, however, for purposes of discussion herein limiting the resolution to a lower screen resolution such as 16 pixels×16 pixels allows for more clear illustration and discussion thereof. Those skilled in the art will recognize that most display devices operate at other, typically higher, resolutions.
FIG. 2 shows a further illustration of display 25. This illustration shows that display device 25 can be viewed as having a series of horizontal scan lines (SCAN LINE 1 through SCAN LINE 16). Each of these horizontal scan lines includes a series of sequential pixels. These horizontal scan lines are one pixel vertically and sixteen pixels horizontally. SCAN LINE 1 includes pixels 1 through 16. Similarly, SCAN LINE 2 through SCAN LINE 16 include pixels 17 through 256. SCAN LINE 15 includes pixels 225 through 240. SCAN LINE 16 includes pixels 241 through 256.
For each pixel region A-P, a block of sequential memory addresses in memory is reserved for storing pixel data. Each block of sequential memory addresses corresponds to a particular pixel region. Pixel data for each pixel within the particular pixel region is stored into the corresponding block of sequential memory addresses.
FIGS. 3A and 3B illustrate how pixel data for given pixels regions of a display device 25 may be stored into memory. Here portions of memory 120 have been allocated to store pixel data for each pixel region A-D. It will be recognized that memory should also be allocated to store pixel data for the pixel regions E-P, however, for purposes of illustration, FIG. 3A shows that memory has been allocated only for pixel regions A, B, C and D.
It can be seen that memory addresses 20010 through 20025 have been allocated to store pixel data related to the pixels of pixel region A (pixel 1, 2, 3, 4, 17, 18, 19, 20, 33, 34, 35, 36, 49, 50, 51 and 52). Similarly, memory addresses have been allocated to store pixel data related to the pixels of pixel regions B, C and D. The typical computer graphic system is configured to retrieve pixel data from memory in bursts by blocks of a predetermined size. This predetermined size may correspond to the size of the blocks of sequential memory addresses in which pixel data for pixels regions is stored. The retrieved block of pixel data is then composed and the composed pixel data is output to an associated display device as a stream of pixel data.
A typical display device displays an image by scanning a series of scan lines, one scan line at a time, until all image data has been displayed. A scan line is composed of a series of either horizontally or vertically adjacent pixels. A typical display will scan lines either horizontally or vertically. In order to scan a scan line, the display must be provided with a stream of pixel data corresponding to the scan line to be displayed. For a horizontally scanning display capable of displaying a screen image and resolution of, for example, 16 pixels×16 pixels, one horizontal scan line represents a vertical dimension of one pixel and a horizontal dimension of 16 pixels. (Note: It is recognized that 16 pixels by 16 pixels is not generally a realistic display screen resolution, however, for purposes of discussion herein limiting the resolution to a lower screen resolution such as 16 pixels×16 pixels allows for more clear illustration and discussion thereof.)
The display 25 is composed of a series of a horizontal scan lines each consisting of 16 horizontal pixels. For example, the first horizontal scan line on display 25 includes sixteen pixels numbered 1 through 16. Similarly the last (or bottom) horizontal scan line is composed of sixteen pixels, numbered 241 through 256. During display of an image, pixel data is retrieved from the memory and output so as to provide a stream of pixel data to an associated display 25, one horizontal scan line at a time.
FIG. 3B illustrates the sequence in which pixel data is retrieved from a typical computer graphics system. In order to provide a stream of pixel data to display 25 (FIG. 1) to display, for example, the horizontal scan line (FIG. 3A) composed of the pixels 1-16, all pixel data corresponding to the pixel regions A, B, C & D must first be retrieved. This data is retrieved during each cycle of refreshing the display 25. Only four (4) pixels from each pixel region are necessary to display the first scan line. More particularly, pixels 1, 2, 3 and 4 are needed from pixel region A; pixels 5, 6, 7 & 8 are needed from pixel region B; pixels 9, 10, 11 & 12 are needed from pixel region C; and pixels 13, 14, 15 & 16 are needed from pixel region B. The arrows “R” are used to indicate the sequence in which pixel data is retrieved from memory 120. The typical computer graphics system does not retrieve only the needed pixel data (pixels 1-16) due to the way pixel data is stored into memory and the manner in which pixel data is retrieved from memory in data transfer burst of a given size. Instead, entire blocks of pixel data corresponding to the pixel regions A, B, C & D (in this example, a total of 64 pixels worth of pixel data) must be retrieved and any un-needed pixel data is then discarded. Only the needed pixel data is output to the display as a stream of pixel data (i.e., any pixel data other than pixel data for pixels 1-16 is discarded). This is a very inefficient use of resources as a great deal of processing bandwidth is consumed with retrieving and discarding unneeded pixel data.
Further, during each refresh cycle, the pixel data stored to memory 120 will be retrieved and composed, regardless of whether or not new pixel data has been written into the memory 120 since the last refresh cycle. As a result, resources are wasted composing pixel data that has not changed and will not yield any different composed pixel data.
Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.